M680x0 Options

Contents|Index|Previous|Next
Motorola 68K options

The following explains the ‘-m’ options defined for the Motorola 68000 series. The default values for these options depends on which style of 68000 was selected when the compiler was configured; the defaults for the most common choices are also given with the following options.

-m68000
-mc68000

Generate output for a 68000. This is the default when the compiler is configured for 68000-based systems.

-m68020
-mc68020

Generate output for a 68020. This is the default when the compiler is configured for 68020-based systems.

-m68881

Generate output containing 68881 instructions for floating point. This is the default for most 68020 systems unless ‘-nfp’ was specified when the compiler was configured.

-m68030

Generate output for a 68030. This is the default when the compiler is configured for 68030-based systems.

-m68040

Generate output for a 68040. This is the default when the compiler is configured for 68040-based systems.
This option inhibits the use of 68881/68882 instructions that have to be emulated by software on the 68040. If your 68040 does not have code to emulate those instructions, use ‘-m68040’.

-m68060

Generate output for a 68060. This is the default when the compiler is configured for 68060-based systems. This option inhibits the use of 68020 and 68881/68882 instructions that have to be emulated by software on the 68060. If your 68060 does not have code to emulate those instructions, use ‘-m68060’.

-mcpu32

Generate output for a CPU32. This is the default when the compiler is configured for CPU32-based systems.
Use this option for microcontrollers with a CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349 and 68360.

-m5200

Generate output for a 520x “Coldfire” family processor. This is the default when the compiler is configured for 520x-based systems.

-m68020-40

Generate output for a 68040, without using any of the new instructions. This results in code which can run relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 68881 instructions that are emulated on the 68040.

-m68020-60

Generate output for a 68060, without using any of the new instructions. This results in code which can run relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 68881 instructions that are emulated on the 68060.

-mfpa

Generate output containing Sun FPA instructions for floating point.

-msoft-float

Generate output containing library calls for floating point.

Warning:
The requisite libraries are not available for all m68k targets. Normally the facilities of the machine’s usual C compiler are used, but this can’t be done directly in cross-compilation. You must make your own arrangements to provide suitable library functions for cross-compilation. The embedded targets m68k-*-aout and m68k-*-coff do provide software floating point support.

-mshort

Consider type int to be 16 bits wide, like shortint.

-mnobitfield

Do not use the bit-field instructions. The -m68000 option implies -mnobitfield.

-mbitfield

Do use the bit-field instructions. The -m68020 option implies -mbitfield. This is the default if you use a configuration designed for a 68020.

-mrtd

Use a different function-calling convention, in which functions that take a fixed number of arguments return with the rtd instruction, which pops their arguments while returning. This saves one instruction in the caller as there is no need to pop the arguments there.
The calling convention using the -mrtd option is incompatible with the one normally used on Unix, so you cannot use it if you need to call libraries compiled with the Unix compiler.
Also, you must provide function prototypes for all functions that take variable numbers of arguments (including printf); otherwise incorrect code will be generated for calls to those functions.
In addition, seriously incorrect code will result if you call a function with too many arguments. (Normally, extra arguments are harmlessly ignored.)
The rtd instruction is supported by the 68010, 68020,68030, 68040, and 68060 processors but not by the 68000 or the 5200 processors.

-malign-int
-mno-align-int

Control whether GNU CC aligns int, long, long long, float, double, and long double variables on a 32-bit boundary (-malign-int) or a 16-bit boundary (-mno-align-int). Aligning variables on 32-bit boundaries produces code that runs somewhat faster on processors with 32-bit busses at the expense of
more memory.

Warning:
If you use the -malign-int switch, GNU CC will align structures containing the above types differently than most published application binary interface specifications for the m68k.

Top|Contents|Index|Previous|Next